package com.icoolkj.ms.pay.service;

import com.icoolkj.ms.common.core.response.ServerResponseEntity;
import com.icoolkj.ms.api.pay.dto.MemberRechargeDTO;
import com.icoolkj.ms.api.pay.model.MemberRecharge;
import com.icoolkj.ms.api.pay.vo.RechargeResultVO;

import java.util.List;
import java.util.Map;

/**
 * 会员充值服务接口
 *
 * @author icoolkj
 */
public interface MemberRechargeService {
    
    /**
     * 创建充值订单
     *
     * @param memberId 会员ID
     * @param rechargeDTO 充值信息
     * @return 充值结果
     */
    ServerResponseEntity<RechargeResultVO> createRechargeOrder(Long memberId, MemberRechargeDTO rechargeDTO);
    
    /**
     * 获取支付参数
     * 
     * @param orderNo 订单号
     * @param payType 支付类型
     * @return 支付参数
     */
    ServerResponseEntity<Map<String, String>> getPaymentParams(String orderNo, String payType);
    
    /**
     * 处理支付结果回调
     *
     * @param payType 支付类型
     * @param params 回调参数
     * @return 处理结果
     */
    ServerResponseEntity<Boolean> handlePayNotify(String payType, Map<String, String> params);
    
    /**
     * 查询充值记录
     *
     * @param memberId 会员ID
     * @return 充值记录列表
     */
    ServerResponseEntity<List<MemberRecharge>> getRechargeRecords(Long memberId);
    
    /**
     * 查询充值订单详情
     *
     * @param orderNo 订单号
     * @return 充值订单详情
     */
    ServerResponseEntity<MemberRecharge> getRechargeDetail(String orderNo);
    
    /**
     * 查询订单状态
     * 
     * @param orderNo 订单号
     * @return 订单状态
     */
    ServerResponseEntity<String> getOrderStatus(String orderNo);
    
    /**
     * 取消充值订单
     *
     * @param memberId 会员ID
     * @param orderNo 订单号
     * @return 操作结果
     */
    ServerResponseEntity<Boolean> cancelRechargeOrder(Long memberId, String orderNo);
} 